aboutsummaryrefslogtreecommitdiffstats
path: root/src/routes/(app)/[username]/receive
diff options
context:
space:
mode:
authorAdam Soltys <[email protected]>2022-11-12 01:40:54 -0800
committerAdam Soltys <[email protected]>2022-11-12 01:40:54 -0800
commit9764d0f0989ea25a502572453ee4f992079f520f (patch)
treeaf9d6efbae922b388f669a50ba048cff2da88a17 /src/routes/(app)/[username]/receive
parent2a8e54dcdc7c7f780253b1d7f9cf3552dcba3ff2 (diff)
downloadcoinos-ui-9764d0f0989ea25a502572453ee4f992079f520f.tar.gz
coinos-ui-9764d0f0989ea25a502572453ee4f992079f520f.zip
persist requests
Diffstat (limited to 'src/routes/(app)/[username]/receive')
-rw-r--r--src/routes/(app)/[username]/receive/[...network]/+page.server.js5
-rw-r--r--src/routes/(app)/[username]/receive/[...network]/+page.svelte79
-rw-r--r--src/routes/(app)/[username]/receive/[...param]/+page.server.js15
-rw-r--r--src/routes/(app)/[username]/receive/[...param]/+page.svelte49
4 files changed, 64 insertions, 84 deletions
diff --git a/src/routes/(app)/[username]/receive/[...network]/+page.server.js b/src/routes/(app)/[username]/receive/[...network]/+page.server.js
deleted file mode 100644
index 1068f273..00000000
--- a/src/routes/(app)/[username]/receive/[...network]/+page.server.js
+++ /dev/null
@@ -1,5 +0,0 @@
-import invoice from '$lib/invoice';
-
-export const actions = {
- default: invoice
-};
diff --git a/src/routes/(app)/[username]/receive/[...network]/+page.svelte b/src/routes/(app)/[username]/receive/[...network]/+page.svelte
deleted file mode 100644
index f19600fd..00000000
--- a/src/routes/(app)/[username]/receive/[...network]/+page.svelte
+++ /dev/null
@@ -1,79 +0,0 @@
-<script>
- import { Avatar, Icon, Numpad } from '$comp';
- import { t } from '$lib/translations';
- import { enhance } from '$app/forms';
- import { page } from '$app/stores';
- import { invoices, request } from '$lib/store';
- import { browser } from '$app/environment';
- import { goto } from '$app/navigation';
-
- export let data;
- export let form;
- let network = 'lightning';
-
- if ($page.params.network) ({ network } = $page.params);
-
- let req;
-
- $: load($page);
- let load = () => {
- if ($request) {
- req = { ...$request };
- $request = null;
- }
- };
-
- let amount;
-
- let { currency, username } = data.subject;
- let { user } = data;
-
- $: paid = browser && form && Object.values($invoices).find((inv) => inv.amount === form.amount);
- $: paid && goto(`/invoice/${paid.uuid}/paid`);
-</script>
-
-{#if form && req}
- <div class="container px-4 mt-20 max-w-xl mx-auto space-y-8">
- <div class="text-center mb-8 space-y-5">
- <p class="text-5xl break-words">
- <span class="text-xl md:text-2xl">Invoice sent to</span>
- </p>
-
- <div class="flex p-1 gap-2 justify-center">
- <Avatar user={req.requester} size={'20'} />
- <p class="text-4xl break-words my-auto">{req.requester.username}</p>
- </div>
- </div>
- <div class="text-center">
- <a href={`/${user.username}/dashboard`} class="mx-auto text-center">
- <button class="bg-black text-white rounded-2xl w-20 py-3 font-bold hover:opacity-80">
- Done
- </button>
- </a>
- </div>
- </div>
-{:else}
- <form method="POST" class="flex justify-center items-center mt-24 mb-3 px-3" use:enhance>
- <input type="hidden" name="amount" value={amount} />
- <input type="hidden" name="currency" value={currency} />
- <input type="hidden" name="username" value={username} />
- <input type="hidden" name="network" value={network} />
-
- {#if req}
- <input type="hidden" name="requester" value={req.requester.username} />
- {/if}
-
- <input type="hidden" name="prompt" value="true" />
-
- <div class="space-y-3 w-[300px] mx-auto">
- <Numpad bind:amount bind:currency />
- <button
- type="submit"
- class="bg-black text-white rounded-xl w-full h-[48px] flex justify-center items-center font-semibold
- opacity-100 hover:opacity-80"
- >
- {amount ? 'Next' : "Sender's choice"}
- </button>
- </div>
- </form>
-{/if}
diff --git a/src/routes/(app)/[username]/receive/[...param]/+page.server.js b/src/routes/(app)/[username]/receive/[...param]/+page.server.js
new file mode 100644
index 00000000..1e57aa67
--- /dev/null
+++ b/src/routes/(app)/[username]/receive/[...param]/+page.server.js
@@ -0,0 +1,15 @@
+import { auth, get } from '$lib/utils';
+import invoice from '$lib/invoice';
+
+export let load = async ({ cookies, params }) => {
+ let id = parseInt(params.param);
+
+ let request;
+ if (id) ({ request } = await get(`/request/${id}`, auth(cookies)));
+
+ return { ...params, request };
+};
+
+export const actions = {
+ default: invoice
+};
diff --git a/src/routes/(app)/[username]/receive/[...param]/+page.svelte b/src/routes/(app)/[username]/receive/[...param]/+page.svelte
new file mode 100644
index 00000000..cb69b06a
--- /dev/null
+++ b/src/routes/(app)/[username]/receive/[...param]/+page.svelte
@@ -0,0 +1,49 @@
+<script>
+ import { Icon, Numpad } from '$comp';
+ import { t } from '$lib/translations';
+ import { enhance } from '$app/forms';
+ import { page } from '$app/stores';
+ import { invoices, requestRedirect } from '$lib/store';
+ import { browser } from '$app/environment';
+ import { goto } from '$app/navigation';
+
+ export let data;
+ export let form;
+ let network = 'lightning';
+
+ if ($page.params.param === 'bitcoin') network = 'bitcoin';
+
+ let { request } = data;
+
+ let amount;
+
+ let { currency, username } = data.subject;
+ let { user } = data;
+
+ $: paid = browser && form && Object.values($invoices).find((inv) => inv.amount === form.amount);
+ $: paid && goto(`/invoice/${paid.uuid}/paid`);
+</script>
+
+<form method="POST" class="flex justify-center items-center mt-24 mb-3 px-3" use:enhance>
+ <input type="hidden" name="amount" value={amount} />
+ <input type="hidden" name="currency" value={currency} />
+ <input type="hidden" name="username" value={username} />
+ <input type="hidden" name="network" value={network} />
+
+ {#if request}
+ <input type="hidden" name="request_id" value={request.id} />
+ {/if}
+
+ <input type="hidden" name="prompt" value="true" />
+
+ <div class="space-y-3 w-[300px] mx-auto">
+ <Numpad bind:amount bind:currency />
+ <button
+ type="submit"
+ class="bg-black text-white rounded-xl w-full h-[48px] flex justify-center items-center font-semibold
+ opacity-100 hover:opacity-80"
+ >
+ {amount ? 'Next' : "Sender's choice"}
+ </button>
+ </div>
+</form>